﻿function Aggiungi_Elemento_Carico() {
    var model = extScope.vm.model;

    if (model.Articolo == '00000000-0000-0000-0000-000000000000') {
        alert('Seleziona articolo...');
        return;
    }

    if ((model.Quantita == 0) || (model.Quantita == null) || (model.Quantita === undefined)) {
        alert('Indicare la quantità...');
        return;
    }

    AddElemento(model);
}

function AggiungiElementoTabellaCarico(id, objModel) {
    var m_caricoItem = new Object();
    m_caricoItem.A1Position = m_rowPosition;
    m_caricoItem.Id = id;
    m_caricoItem.IdArticolo = objModel.Articolo;
    m_caricoItem.CodiceArticolo = $('#formly_1_asyncselect_Articolo_0 option:selected').text();
    m_caricoItem.DescrizioneArticolo = objModel.Descrizione;
    m_caricoItem.IdCodiceFornitore = objModel.CodiceFornitore;
    m_caricoItem.CodiceFornitore = $('#formly_1_asyncselect_CodiceFornitore_1 option:selected').text();
    m_caricoItem.UMQta = $('.quantitaAOR').text();
    m_caricoItem.Quantita = objModel.Quantita;
    m_caricoItem.UMQtaFatt = $('.qtaFattAOR').text();;
    m_caricoItem.QtaFatt = objModel.QtaFatt;
    m_caricoItem.Note = objModel.NoteArticolo;
    m_caricoItem.NoteMovimento = objModel.Note;

    if ($('#foto').attr("src") === undefined) {
        m_caricoItem.FotoArticolo = 'http://placehold.it/25x25/7ba9d0/fff?text=%3A%20(';
    } else {
        m_caricoItem.FotoArticolo = $('#foto').attr("src");
    }

    m_caricoItem.Fornitore = $('#formly_1_ui-select-single-search_Fornitore_2').text().trim();

    m_tableJQDTTable.row.add(m_caricoItem).draw();

    m_rowPosition++;
}

function AddElemento(objModel) {
    // scrivo il movimento di scarico nel db...
    if (m_id_movimento_carico == null) {
        Salva_Dati_Documento_Carico(objModel);
    } else {
        Salva_Elemento_Carico(m_id_movimento_carico, objModel);
    }
}

function Salva_Dati_Documento_Carico(objModel) {
    var url = '/api/Movimenti/SalvaDatiDocumentoCarico';

    var m_data = JSON.stringify({ data: objModel });

    $.ajax({
        global: false,
        type: "POST",
        url: url,
        data: m_data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {

            var data = JSON.parse(response);

            m_id_movimento_carico = data.Id;

            Salva_Elemento_Carico(m_id_movimento_carico, objModel);
        },
        failure: function (response) {
            alert(response);
        }
    });
}

function Salva_Elemento_Carico(idMovimento, objModel) {
    var url = '/api/Movimenti/SalvaElementoCarico';

    var m_data = JSON.stringify({ idMovimento: idMovimento, data: objModel });

    $.ajax({
        global: false,
        type: "POST",
        url: url,
        data: m_data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            ShowResponseMessage(response.name);

            AggiungiElementoTabellaCarico(response.value, objModel);

            AggiornaFornitoriElementiCarico(m_data);

            AzzeraDati();
        },
        failure: function (response) {
            alert(response);
        }
    });
}

function AggiornaFornitoriElementiCarico(data) {
    var url = '/api/Movimenti/AggiornaFornitoriElementoCarico';

    $.ajax({
        global: false,
        type: "POST",
        url: url,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            ShowResponseMessage(response.name);

            AggiungiElementoTabellaCarico(response.value, objModel);

            AggiornaFornitoriElementiCarico(m_data);

            AzzeraDati();
        },
        failure: function (response) {
            alert(response);
        }
    });
}

function CancellaArticolo(obj) {
    var p = obj.Id;

    var item = null;
    var m_rowIndex = 0;
    var data = m_tableJQDTTable.rows().data();

    m_rowIndex = m_tableJQDTTable.row('#' + p + '').index()

    if (data.length == 1) {

        bootbox.confirm({
            title: "Cancella Elemento",
            message: "Il movimento di carico è l\'unico presente in distinta: Se si procede sarà cancellata l\'intera distinta.",
            buttons: {
                cancel: {
                    label: '<i class="fa fa-times"></i> Annulla'
                },
                confirm: {
                    label: '<i class="fa fa-check"></i> Procedi'
                }
            },
            callback: function (result) {
                if (result) {

                    Cancella_Elemento_Carico(m_id_movimento_carico, obj, m_rowIndex, 0);

                    Cancella_Dati_Documento_Movimento(m_id_movimento_carico);

                    m_id_movimento_carico = null;

                    AzzeraDati();
                    AzzeraDatiDocumento();
                }
            }
        });

    } else {
        Cancella_Elemento_Carico(m_id_movimento_carico, obj, m_rowIndex, 1);
    }
}

function Cancella_Elemento_Carico(idMovimento, obj, rowIndex, showMessage) {
    if (showMessage == 1) {
        bootbox.confirm({
            title: "Cancella Elemento",
            message: "Stai per cancellare un elemento dalla distinta di carico.\nProcedere ?",
            buttons: {
                cancel: {
                    label: '<i class="fa fa-times"></i> Annulla'
                },
                confirm: {
                    label: '<i class="fa fa-check"></i> Procedi'
                }
            },
            callback: function (result) {
                if (result) {
                    CancellaElementoDistinta(idMovimento, obj, rowIndex, '/api/Movimenti/CancellaElementoCarico', 0);
                }
            }
        });
    } else {
        CancellaElementoDistinta(idMovimento, obj, rowIndex, '/api/Movimenti/CancellaElementoCarico', 0);
    }
}

function CancellaTuttiArticoli() {
    bootbox.confirm({
        title: "Cancella Distinta Carico",
        message: "Stai per cancellare la distinta di carico.\nProcedere ?",
        buttons: {
            cancel: {
                label: '<i class="fa fa-times"></i> Annulla'
            },
            confirm: {
                label: '<i class="fa fa-check"></i> Procedi'
            }
        },
        callback: function (result) {
            if (result) {

                Cancella_Elementi_Carico(m_id_movimento_carico);

                Cancella_Distinta(m_id_movimento_carico);

                m_id_movimento_carico = null;

                AzzeraDati();
                AzzeraDatiDocumento();
            }
        }
    });
}

function Cancella_Elementi_Carico(idMovimento) {
    var url = '/api/Movimenti/CancellaElementiCarico';

    var m_data = JSON.stringify({ IdMovimento: idMovimento });

    $.ajax({
        type: "POST",
        url: url,
        data: m_data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            ShowResponseMessage(response);

            m_tableJQDTTable.clear().draw();
            //AzzeraDati();
        },
        failure: function (response) {
            alert(response);
        }
    });
}